python
Last update 2018.4.5
Introduction
最初から入っていた。Reference(?)
Python Data Science Handbooknote.nkmk.me
リストの結合
[]
で囲んだものがリスト。[1,2,3]
など。
ほかにも array とか tuple があって,別物のようなので注意。
リストの結合例:
dam1=[1,2,3] dam2=[8,9] dam3=dam1+dam2とすると,dam3 は [1,2,3,8.9] となる。3つ以上のリストを足してもよい。
SciPy
物理定数などを計算したいとき、次をする。
from scipy.constants import *
その後、例えばプランク定数を2pi で割ったやつを知りたいときは
hbar
と打つと数字がでてくる。どんな定数が得られるかは
ここを見よ。
cython
terminal でpip install cython
とすると勝手にダウンロードして色々入れてくれる。
numba
(メモをしたもののなんだったか全く覚えていない)https://librabuch.jp/blog/2015/04/numba-install-for-mac/ brew install llvm (これは v3.8 がはいるのでだめ 2016.10.4.) brew install homebrew/versions/llvm37 # llvmのインストール brew install llvm # パスはバージョンに応じて適時書き換えて下さい export LLVM_CONFIG=/usr/local/Cellar/llvm/3.5.1/bin/llvm-config # 依存パッケージのpipインストール pip install numpy pip install enum34 pip install funcsigs # llvmlite のインストール pip install llvmlite # Numbaのpipインストール pip install numba
Tips
分数は、以下のように、それより小さい整数に置き換えられてしまう。>>> 1/2 0 >>> -1/2 -1なので、1./2 とか 1/2. などと入力したほうがよい。これを忘れると、例えば、
>>> -1/2 * (4*np.pi)**2 -0.006332573977646111となってしまい、見事に2倍間違う。
代入が mathematica 的なことになるっぽい(?) 再現性がないので間違いかも。
dam0 = np.append(jini,log10sigmav0) # dam0 = [1,2,3,4,5,...] dam = dam0 # dam = [1,2,3,4,5,...] dam0[0] = 10 # dam0 = [10,2,3,4,5,...] print dam # [10,2,3,4,5,...] が表示される。
ファイルを読み込み、計算し、出力
次のファイルを読み込み# m1 m2 100 100 100 200 100 300 ...f(m1, m2) を計算し、次のように出力したいとする。
# m1 m2 f(m1, m2) 100 100 200 100 200 300 100 300 400 ...入力ファイル名を "input.dat"、出力ファイル名を "output.dat" とする。
まず最初の行は変更するには、
import linecache inputName = "input.dat" outputName = "output.dat" legend = linecache.getline(inputName,1) legendnew =legend.replace("\n","f(m1,m2) \n") outfp=open(outputName, 'a') outfp.write(legendnew) outfp.close()とすればよい。legend が2個しかないなら、手で入力しても良いが、これなら何個legend があっても変更が容易。
Integral
integrate.quad を使う。tuple で (こたえ、絶対誤差) という形で答えが出てくる。 答えだけ欲しければ ans[0] などとして取り出す。# 1変数の関数 f(x) を積分したい。
def f(x): return 4/(1+x**2) print integrate.quad(f, 0, 1)これは f(x) を 0 から 1 まで積分する。
# 2変数の関数 f(x,a) を x について積分したい。
def f(x,a): return a*4/(1+x**2) a = 1 print integrate.quad(f, 0, 1,args=a)これは f(x,1) を 0 から 1 まで積分する。
# 3変数の関数 f(x,a,b) を x について積分したい。
def f(x,a): return a*4/(1+x**2) + b a = 1 b = 10 print integrate.quad(f, 0, 1,args=(a,b))これは f(x,1,10) を 0 から 1 まで積分する。